

import java.util.Scanner;

/*
 * 首次适应算法：从空闲分区开始处查找，直到能找到一个可以满足大小要求的空闲分区为止，然后分给需要的请求作业
 * 特点：倾向于使用内存中低地址部分的空闲区，从而尽量保留高地址部分的空闲区
 * 缺点：使低地址区的空间不断被划分，留下很多难以利用小的空闲区，导致每次查找又从低地址部分开始查，花费一定的开销
 */
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请设置初始化内存大小:");
        int size = in.nextInt();
        memory memory = new memory(size);
        memory.showmpartition();
        while (true){
            System.out.println("**模拟动态分区首次适应分配和回收算法**");
            System.out.println("*             功能菜单          *");
            System.out.println("*             请选择：          *");
            System.out.println("*             1.分配内存        *");
            System.out.println("*             2.回收内存        *");
            System.out.println("*             3.查看内存        *");
            System.out.println("*             4.退出           *");
            System.out.println("*******************************");
            System.out.print("请选择指令:");
            size = in.nextInt();
            switch (size) {
                case 1:
                    System.out.print("请输入需要申请的空间大小:");
                    size = in.nextInt();
                    memory.FristFit(size);
                    break;
                case 2:
                    System.out.print("请输入需要回收的分区号:");
                    size = in.nextInt();
                    memory.collection(size);
                    break;
                case 3:
                    memory.showmpartition();
                    break;
                case 4:
                    System.exit(0);
                    break;
                default:
                    System.out.println("请重新选择!");
            }
        }
    }
}



